home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / hack / 3_1_3 / sys / os2 / makefile.os2 < prev    next >
Encoding:
Makefile  |  1993-05-20  |  37.3 KB  |  1,332 lines

  1. #    SCCS Id: @(#)Makefile.os2    3.1    93/05/05
  2. #    OS/2 NetHack 3.1 Makefile for OS/2 versions 1.x and 2.x
  3. #    Copyright (C) 1990, 1991, 1992, 1993 Timo Hakulinen
  4. #
  5. #    Supported compilers: Microsoft C 5.1 and 6.0A, GCC emx 0.8f,
  6. #    IBM C Set/2 1.00 with Toolkit/2 2.00.
  7. #
  8. #    NDMAKE ver 4.5, Microsoft/IBM NMAKE, or Dennis Vadura's DMAKE is
  9. #    required; old MS-MAKE will not work.  To enable the appropriate
  10. #    make utility, uncomment the respective make-specific macros.  If
  11. #    you plan to cross-compile in DOS, your best bet is NDMAKE, since
  12. #    it requires less memory than NMAKE.  To compile in OS/2 use NMAKE,
  13. #    DMAKE or something compatible.  Remember to set $(RLIBS) to real mode
  14. #    libraries if cross-compiling in DOS, and to protected mode libraries
  15. #    for compilation in OS/2.
  16. #
  17. #    Copy this file into $(SRC) directory, rename it to "makefile"
  18. #    (important, many targets rely on it), compile and link inside
  19. #    $(SRC).  If required, termcap library can be built from termcap
  20. #    sources using makefile.lib in "sys\share" directory.
  21. #
  22. #    "MSC" in this makefile refers to Microsoft C 5.1 and 6.0A.
  23. #    Whenever the distinction is significant, it is indicated.
  24. #
  25. #    "GCC" refers to GCC emx 0.8f only.  No other ports of
  26. #    GCC are supported.
  27. #
  28. #    "CSet/2" is the IBM 32 bit C compiler for OS/2 2.0.  CSet/2
  29. #    support courtesy Jeff Urlwin (jurlwin@gandalf.umcs.maine.edu).
  30. #
  31. #    "OMF" is short for "Object Module Format" and refers to the
  32. #    standard OS/2 object format, which e.g. link386 uses.  MSC and
  33. #    CSet/2 always produce OMF object files, and GCC can be instructed
  34. #    to produce them with proper switches (see below).
  35. #
  36. #    "a.out" refers to Unix object file format, which is used by GCC
  37. #    in its default compilation mode.  These object files must be
  38. #    linked using GCC's own linker to produce a proper OS/2 executable.
  39. #    GDB debugger shipped with GCC can only be used with a.out object
  40. #    format.
  41. #
  42. #    Note that the default setup in this makefile is my personal setup,
  43. #    which you will have to adapt to your configuration.
  44. #
  45.  
  46. #
  47. #    Compiler and linker selection.
  48. #
  49.  
  50. CC    = cl        # MSC
  51. #CC    = gcc        # GCC
  52. #CC    = icc        # CSet/2
  53.  
  54. LINK    = link        # MSC
  55. #LINK    = link386    # GCC OMF, CSet/2
  56.  
  57. #
  58. #    Make syntax peculiarities.
  59. #
  60. #    Enable the uppermost eight lines for NDMAKE, the middle eight
  61. #    for NMAKE (MSC, CSet/2), and the lowermost eight for DMAKE.
  62. #
  63.  
  64. #MAKEB    = ndmake    # Executable name (change if necessary)
  65. #CMD    =        # Command processor name if required
  66. #AB    = $*.c        # Base name of the target in target action
  67. #CB    = $*.c        #               - " -               dependent
  68. #B    = (        # Command line begin in shell one-liners
  69. #E    = )        #   - " -      end   - " -
  70. #S    = ;        # Command separator  - " -
  71. #P    = %        # Literal percent sign
  72. MAKEB    = nmake
  73. CMD    =
  74. AB    = $(@B).c
  75. CB    = $$(@B).c
  76. B    = (
  77. E    = )
  78. S    = &
  79. P    = %%
  80. #MAKEB    = dmake
  81. #CMD    = cmd /C
  82. #AB    = $(@:B).c
  83. #CB    = $$(@:B).c
  84. #B    = $(CMD) "
  85. #E    = "
  86. #S    = &
  87. #P    = %
  88.  
  89. #
  90. #    Most makes execute actions automatically inside a subshell,
  91. #    which makes even the shell internals work ok.  This applies
  92. #    to NDMAKE and NMAKE.  DMAKE wants it spelled out for it.
  93. #
  94.  
  95. ECHO    = $(CMD) @echo
  96. RM    = $(CMD) del
  97. CP    = $(CMD) copy
  98. CAT    = $(CMD) type
  99.  
  100. #
  101. #    For those of us who have these on PC.
  102. #
  103.  
  104. #YACC    = yacc
  105. #LEX    = lex
  106. YACC    = bison -y
  107. LEX    = flex
  108.  
  109. #
  110. #    For extracting NetHack icon.
  111. #
  112.  
  113. UUDECODE = uudecode
  114.  
  115. #
  116. #    For people with TeX and LaTeX.
  117. #
  118.  
  119. LATEX    = latex
  120.  
  121. #
  122. #    If you have TOUCH, some things become slightly easier.
  123. #
  124.  
  125. TOUCH    = touch
  126.  
  127. #
  128. #    Standard file naming for LEX and YACC output may vary in PC
  129. #    installations.  These three are probably the most generally used
  130. #    names.
  131. #
  132.  
  133. YTABC    = y_tab.c
  134. YTABH    = y_tab.h
  135. LEXYYC    = lexyy.c
  136.  
  137. #
  138. #    Source tree base directory.
  139. #
  140.  
  141. NHSRC    = \nh31
  142.  
  143. #
  144. #    Source directories.  Makedefs hardcodes these, don't change them.
  145. #
  146.  
  147. INCL    = $(NHSRC)\include    # NetHack include files
  148. DAT    = $(NHSRC)\dat        # NetHack data files
  149. DOC    = $(NHSRC)\doc        # NetHack documentation files
  150. UTIL    = $(NHSRC)\util        # Utility source
  151. SRC    = $(NHSRC)\src        # Main source
  152. WIN    = $(NHSRC)\win\tty    # Window system specific source
  153. SYS    = $(NHSRC)\sys\os2    # System specific source
  154. SSYS    = $(NHSRC)\sys\share    # Shared system files
  155.  
  156. #
  157. #    Modifiable directories.  Set these according to your setup and
  158. #    preferences.  They must all be present prior to compilation.
  159. #    OBJ, TEMP and GAMEDIR should all preferably be separate and,
  160. #    in particular, not the same as any of the source directories.
  161. #    Note that DMAKE may dislike drive designators in paths because
  162. #    it misinterprets the colon as being part of a make rule.  In this
  163. #    case, all directories have to reside in the same drive.
  164. #
  165.  
  166. OBJ    = \tmp\obj        # Object files
  167. TEMP    = \tmp\bin        # Temporary files during make process
  168. GAMEDIR = \games\nh31        # Game directory
  169. PLIBP    = d:\c6\lib        # Protected mode C libraries
  170. RLIBP    = d:\c6\lib        # Possible real mode C libraries
  171.  
  172. TLIBP    = \toolkt20\os2lib    # CSet/2 Toolkit libpath (OS2386.LIB)
  173.  
  174. #
  175. #    The game name and description.
  176. #
  177.  
  178. GAME    = nethack
  179. GAMEDES = "NetHack 3.1"
  180.  
  181. #
  182. #    The uppermost two lines for MSC, the middle two for GCC, and
  183. #    the lowermost two for CSet/2.
  184. #
  185. #    MSC: compile only, compiler id, large memory model, optimization level,
  186. #    remove stack probes, 80286 instruction set, dedicated datasegment for
  187. #    items >= 10 bytes, pack structures on 1 byte boundaries, generate code
  188. #    for 8087 coprocessor, compiler warning level, include file path, invoke
  189. #    large model compiler, debug flags, ANSI conformance.
  190. #
  191. #    GCC: compile only, compiler id, object format selection, warnings,
  192. #    include file path, debug flags, ANSI conformance.
  193. #
  194. #    CSet/2: compile only, compiler id, migration lib, remove stack probes,
  195. #    force intra 64K alignment for data, force optlink linkage on function
  196. #    calls, warning level, include file path, debug flags, ANSI conformance.
  197. #
  198.  
  199. CFLAGS    = /c /DOS2_MSC /AL /O /Gs /G2 /Gt10 /Zp1 /FPi $(WARN) /I$(INCL) $(BIGC) $(CDFLAGS) $(STDC)
  200. O    = /Fo
  201. #CFLAGS    = -c -DOS2_GCC $(GCCO) $(WARN) -I$(INCL) $(CDFLAGS) $(STDC)
  202. #O    = -o
  203. #CFLAGS    = /c /DOS2_CSET2 /Sm /Gs /Gt+ /Mp $(WARN) /I$(INCL) $(CDFLAGS) $(STDC)
  204. #O    = /Fo
  205.  
  206. #
  207. #    Compiler warning levels.  These are really for development, so
  208. #    they are commented out in general distribution to save the user
  209. #    from masses of benign warnings.  If any problems arise, however,
  210. #    they may help in finding the trouble.
  211. #
  212. #    MSC: warning level 3 is highest in 5.1, second highest in 6.0.
  213. #    Cries a lot, but for no real cause.  Warning level 0 for distribution.
  214. #
  215. #    GCC: max. reasonable GCC warning levels.  Can't use -Wall, because then
  216. #    it would whine about all the zillions of unused declarations etc.
  217. #    Even with these switches you'll get a lot of warnings, but they should
  218. #    all be benign.
  219. #
  220. #    CSet/2: warning level 3.  The second optional parameter gives
  221. #    lots of extra warnings.
  222. #
  223.  
  224. WARN    = /W0 #/W3        # MSC
  225. #WARN    = #-W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN # GCC
  226. #WARN    = #/W3 #/Kbper    # CSet/2
  227.  
  228. #
  229. #    GCC object format selection.  The upper line for standard OS/2 OMF
  230. #    object format, the lower for Unix style a.out format.
  231. #
  232.  
  233. #GCCO    = -Zomf -Zsys    # GCC OMF
  234. GCCO    =        # GCC a.out
  235.  
  236. #
  237. #    MSC 5.1 needs the large model first pass of the compiler.
  238. #    Not needed for later versions.
  239. #
  240.  
  241. BIGC    =
  242. #BIGC    = /B1 d:\binb\c1l.exe    # MSC 5.1
  243.  
  244. #
  245. #    Unset CL to avoid troubles with conflicting switches in MSC 6.0.
  246. #
  247.  
  248. CL    =
  249.  
  250. #
  251. #    MSC, CSet/2: don't ignore case in symbols, no default lib search,
  252. #    stack 8KB, allow max 1024 segments in program.
  253. #
  254. #    GCC: likes a big stack.
  255. #
  256.  
  257. LFLAGS    = /noig /nod /stack:8192 /seg:1024 $(LDFLAGS)    # MSC, CSet/2
  258. #LFLAGS    = /noig /stack:40000                # GCC OMF
  259.  
  260. #
  261. #    Prepare for a debugger.
  262. #
  263.  
  264. CDFLAGS =
  265. LDFLAGS =
  266. #CDFLAGS = /Zi        # CodeView (MSC)
  267. #LDFLAGS = /CO        # - " -
  268. #CDFLAGS = -g        # GDB (GCC a.out)
  269. #LDFLAGS = -g        # - " -
  270. #CDFLAGS = /Ti+        # IPMD (CSet/2)
  271. #LDFLAGS = /CO        # - " -
  272.  
  273. #
  274. #    How to produce the most ANSI-like environment.
  275. #
  276.  
  277. #STDC    =        # MSC 5.1
  278. STDC    = /D__STDC__    # MSC 6.0, CSet/2
  279. #STDC    = -ansi        # GCC
  280.  
  281. #
  282. #    Possible system object files required during linking.
  283. #
  284.  
  285. SYSOBJ    =            # MSC, GCC a.out, CSet/2
  286. #SYSOBJ    = $(PLIBP)\crt0.obj    # GCC OMF
  287.  
  288. #
  289. #    Compiler library selection.  Change if necessary.
  290. #
  291. #    MSC: Protected mode C libraries for 8087 emulator,
  292. #    OS/2 API entry points.
  293. #
  294. #    GCC OMF: C standard lib, extra GCC lib, static system lib,
  295. #    OS/2 API entry points.
  296. #
  297. #    GCC a.out: extra GCC lib, C standard lib, extra GCC lib (again),
  298. #    OS/2 API entry points.
  299. #
  300. #    CSet/2: C standard libraries, OS/2 API entry points.
  301. #
  302.  
  303. #PLIBS    = $(PLIBP)\llibcep $(PLIBP)\doscalls    # MSC 5.1
  304. PLIBS    = $(PLIBP)\llibcep $(PLIBP)\os2        # MSC 6.0
  305. #PLIBS    = $(PLIBP)\libc $(PLIBP)\libgcc $(PLIBP)\libsys $(PLIBP)\libos2    # GCC OMF
  306. #PLIBS    = -lgcc -lc -lgcc -los2            # GCC a.out (defining -lgcc twice is required)
  307. #PLIBS    = $(PLIBP)\dde4sbs.lib $(PLIBP)\dde4sbm.lib $(TLIBP)\os2386.lib # CSet/2
  308.  
  309. #
  310. #    C libraries used by makedefs, lev_comp and dgn_comp (change if
  311. #    necessary).  If compilation is done in DOS, enable the upper line
  312. #    possibly setting the library name to something else, if in OS/2,
  313. #    enable the lower line (protected mode libraries).
  314. #
  315.  
  316. #RLIBS    = $(RLIBP)\llibcer
  317. RLIBS    = $(PLIBS)
  318.  
  319. #
  320. #    Default compilation skeletons.    The uppermost six are for
  321. #    MSC and CSet/2 and the lowermost six for GCC.
  322. #
  323.  
  324. SRCCC    = $(CC) $(CFLAGS) $(O)$@ $(SRC)\$(AB)
  325. UTILCC    = $(CC) $(CFLAGS) $(O)$@ $(UTIL)\$(AB)
  326. SYSCC    = $(CC) $(CFLAGS) $(O)$@ $(SYS)\$(AB)
  327. SSYSCC    = $(CC) $(CFLAGS) $(O)$@ $(SSYS)\$(AB)
  328. PSYSCC    = $(CC) $(CFLAGS) $(O)$@ $(SSYS)\pc$(AB)
  329. WINCC    = $(CC) $(CFLAGS) $(O)$@ $(WIN)\$(AB)
  330. #SRCCC    = $(CC) $(CFLAGS) $(O) $@ $(AB)
  331. #UTILCC    = $(B) cd $(UTIL) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  332. #SYSCC    = $(B) cd $(SYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  333. #SSYSCC    = $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  334. #PSYSCC    = $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ pc$(AB) $(E)
  335. #WINCC    = $(B) cd $(WIN) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
  336.  
  337. #
  338. #    Default linker skeletons.  The upper four lines for everything
  339. #    that uses standard OS/2 object format (MSC, CSet/2, GCC OMF),
  340. #    the lower four for GCC a.out format.
  341. #
  342.  
  343. GAMELN    = $(LINK) @$(TEMP)\$(GAME).rsp
  344. MKDFLN    = $(LINK) @$(TEMP)\makedefs.rsp
  345. LEVCLN    = $(LINK) @$(TEMP)\lev_comp.rsp
  346. DGNCLN    = $(LINK) @$(TEMP)\dgn_comp.rsp
  347. RCVRLN    = $(LINK) @$(TEMP)\recover.rsp
  348. #GAMELN    = $(CC) $(LDFLAGS) -o $(GAMEDIR)\$(GAME).exe $(TEMP)\$(GAMEDEF) $(SYSOBJ) $(HOBJ) $(PLIBS) $(TERMLIB)
  349. #MKDFLN    = $(CC) $(LDFLAGS) -o $(TEMP)\makedefs.exe $(TEMP)\$(MKDFDEF) $(SYSOBJ) $(MAKEOBJS) $(PLIBS)
  350. #LEVCLN    = $(CC) $(LDFLAGS) -o $(TEMP)\lev_comp.exe $(TEMP)\$(LEVCDEF) $(SYSOBJ) $(SPLEVOBJS) $(PLIBS)
  351. #DGNCLN    = $(CC) $(LDFLAGS) -o $(TEMP)\dgn_comp.exe $(TEMP)\$(DGNCDEF) $(SYSOBJ) $(DGNCOMPOBJS) $(PLIBS)
  352. #RCVRLN    = $(CC) $(LDFLAGS) -o $(GAMEDIR)\recover.exe $(TEMP)\$(RCVRDEF) $(SYSOBJ) $(RECOVOBJS) $(PLIBS)
  353.  
  354. #
  355. #    OS/2 module definition files for NetHack,
  356. #    makedefs, dgn_comp, lev_comp, recover.
  357. #
  358.  
  359. GAMEDEF    = $(GAME).def
  360. MKDFDEF    = makedefs.def
  361. LEVCDEF    = lev_comp.def
  362. DGNCDEF    = dgn_comp.def
  363. RCVRDEF    = recover.def
  364.  
  365. #
  366. #    For compilation in DOS, enable the lower three lines and
  367. #    disable the upper three.
  368. #
  369.  
  370. MKDFMD    = $(TEMP)\$(MKDFDEF)
  371. LEVCMD    = $(TEMP)\$(LEVCDEF)
  372. DGNCMD    = $(TEMP)\$(DGNCDEF)
  373. #MKDFMD    =
  374. #LEVCMD    =
  375. #DGNCMD    =
  376.  
  377. #
  378. #    Optional high-quality BSD random number generation routines
  379. #    (see os2conf.h).  Set to nothing if not used.
  380. #
  381.  
  382. RANDOM    = $(OBJ)\random.o
  383. #RANDOM    =
  384.  
  385. #
  386. #    If TERMLIB is defined in os2conf.h, comment out the upper line and
  387. #    uncomment the lower.  If the termcap-library doesn't exist, use
  388. #    sys\share\makefile.lib to build it.
  389. #
  390.  
  391. TERMLIB =
  392. #TERMLIB = termlib.lib
  393.  
  394. #
  395. #    Short / long file name selection for FAT and HPFS.
  396. #    Only three files need consideration.
  397. #
  398.  
  399. GUIDEBOO = Guideboo    # FAT
  400. PATCHLEV = patchlev    # - " -
  401. DATABASE = data.bas    # - " -
  402. #GUIDEBOO = Guidebook    # HPFS
  403. #PATCHLEV = patchlevel    # - " -
  404. #DATABASE = data.base    # - " -
  405.  
  406.  
  407. #
  408. #    If you have LaTeX and want to create the NetHack Guidebook in TeX
  409. #    device-independent file format, comment out the upper line and
  410. #    uncomment the lower.
  411. #
  412.  
  413. GUIDE    =
  414. #GUIDE    = $(TEMP)\$(GUIDEBOO).dvi
  415.  
  416. #
  417. #    Set WINOBJ lines corresponding to your desired combination
  418. #    of windowing systems.  Also set windowing systems in config.h.
  419. #
  420. #    A straight tty port using no native windowing system is the
  421. #    only choice for now.
  422. #
  423.  
  424. WINOBJ = $(OBJ)\getline.o $(OBJ)\termcap.o $(OBJ)\topl.o $(OBJ)\wintty.o
  425.  
  426. #
  427. #    The default make target, so just typing 'make' is useful.
  428. #    Has to be the first target in the makefile.
  429. #
  430.  
  431. default : all
  432.  
  433. #
  434. #    If you have yacc and lex programs and make any changes, uncomment
  435. #    the lowermost two lines and comment out the others.  If you make
  436. #    changes to the .y and .l files but prefer processing the files
  437. #    separately elsewhere, activate the middle two lines, so your changes
  438. #    don't get overwritten.
  439. #
  440.  
  441. do_yacc : yacc_cpy    # use pre-generated files
  442. do_lex :  lex_cpy    #    - " -
  443. #do_yacc : yacc_msg    # show message if changed
  444. #do_lex :  lex_msg    #    - " -
  445. #do_yacc : yacc_act    # re-process files
  446. #do_lex :  lex_act    #    - " -
  447.  
  448. #
  449. #    If you have the TOUCH utility the upper line is ok.  Otherwise
  450. #    the lower one does the same albeit in an ugly manner.  Besides,
  451. #    the latter method only works for text files.
  452. #
  453.  
  454. #do_touch : realtouch
  455. do_touch : faketouch
  456.  
  457. #
  458. #    If you don't have uudecode program, use the upper line.
  459. #    If you still want the icon, you'll have to extract the
  460. #    file manually somewhere else.
  461. #
  462.  
  463. #do_icon : icon_msg    # show message if changed
  464. do_icon : icon_act    # extract icon file
  465.  
  466. #
  467. #    If you don't want to generate nethack.cmd, use the upper line.
  468. #    This could be the case, e.g., if you use a different shell than
  469. #    the standard cmd.exe.
  470. #
  471.  
  472. #do_cmd : cmd_msg    # show message
  473. do_cmd : cmd_act    # generate nethack.cmd
  474.  
  475. ######################################################################
  476. #
  477. #    Nothing below this line should have to be changed.
  478. #
  479. #    Other things that have to be reconfigured are in
  480. #    config.h, os2conf.h and possibly system.h.
  481. #
  482.  
  483. #
  484. #    The game filename.
  485. #
  486.  
  487. GAMEFILE = $(GAMEDIR)\$(GAME).exe
  488.  
  489. #
  490. #    Object files for makedefs.
  491. #
  492.  
  493. MAKEOBJS = $(OBJ)\makedefs.o $(OBJ)\monst.o $(OBJ)\objects.o
  494.  
  495. #
  496. #    Object files for special levels compiler.
  497. #
  498.  
  499. SOBJ01    = $(OBJ)\lev_yacc.o $(OBJ)\lev_lex.o $(OBJ)\lev_main.o $(OBJ)\alloc.o
  500. SOBJ02    = $(OBJ)\monst.o $(OBJ)\objects.o $(OBJ)\panic.o $(OBJ)\decl.o
  501. SOBJ03    = $(OBJ)\drawing.o
  502.  
  503. SPLEVOBJS = $(SOBJ01) $(SOBJ02) $(SOBJ03)
  504.  
  505. #
  506. #    Object files for dungeon compiler.
  507. #
  508.  
  509. DOBJ01    = $(OBJ)\dgn_yacc.o $(OBJ)\dgn_lex.o $(OBJ)\dgn_main.o
  510. DOBJ02    = $(OBJ)\panic.o $(OBJ)\alloc.o
  511.  
  512. DGNCOMPOBJS = $(DOBJ01) $(DOBJ02)
  513.  
  514. #
  515. #    Object files for recovery utility.
  516. #
  517.  
  518. RECOVOBJS = $(OBJ)\recover.o
  519.  
  520. #
  521. #    Object files for the game itself.
  522. #
  523.  
  524. VOBJ01 = $(OBJ)\allmain.o  $(OBJ)\alloc.o    $(OBJ)\apply.o    $(OBJ)\artifact.o
  525. VOBJ02 = $(OBJ)\attrib.o   $(OBJ)\ball.o     $(OBJ)\bones.o    $(OBJ)\botl.o
  526. VOBJ03 = $(OBJ)\cmd.o      $(OBJ)\dbridge.o  $(OBJ)\decl.o     $(OBJ)\detect.o
  527. VOBJ04 = $(OBJ)\display.o  $(OBJ)\do.o       $(OBJ)\do_name.o  $(OBJ)\do_wear.o
  528. VOBJ05 = $(OBJ)\dog.o      $(OBJ)\dogmove.o  $(OBJ)\dokick.o   $(OBJ)\dothrow.o
  529. VOBJ06 = $(OBJ)\drawing.o  $(OBJ)\dungeon.o  $(OBJ)\eat.o      $(OBJ)\end.o
  530. VOBJ07 = $(OBJ)\engrave.o  $(OBJ)\exper.o    $(OBJ)\explode.o  $(OBJ)\extralev.o
  531. VOBJ08 = $(OBJ)\files.o    $(OBJ)\fountain.o $(OBJ)\hack.o     $(OBJ)\hacklib.o
  532. VOBJ09 = $(OBJ)\invent.o   $(OBJ)\lock.o     $(OBJ)\mail.o     $(OBJ)\main.o
  533. VOBJ10 = $(OBJ)\makemon.o  $(OBJ)\mcastu.o   $(OBJ)\mhitm.o    $(OBJ)\mhitu.o
  534. VOBJ11 = $(OBJ)\minion.o   $(OBJ)\mklev.o    $(OBJ)\mkmap.o    $(OBJ)\mkmaze.o
  535. VOBJ12 = $(OBJ)\mkobj.o    $(OBJ)\mkroom.o   $(OBJ)\mon.o      $(OBJ)\mondata.o
  536. VOBJ13 = $(OBJ)\monmove.o  $(OBJ)\monst.o    $(OBJ)\monstr.o   $(OBJ)\mplayer.o
  537. VOBJ14 = $(OBJ)\mthrowu.o  $(OBJ)\muse.o     $(OBJ)\music.o    $(OBJ)\o_init.o
  538. VOBJ15 = $(OBJ)\objects.o  $(OBJ)\objnam.o   $(OBJ)\options.o  $(OBJ)\os2.o
  539. VOBJ16 = $(OBJ)\pager.o    $(OBJ)\pcsys.o    $(OBJ)\pickup.o   $(OBJ)\pline.o
  540. VOBJ17 = $(OBJ)\polyself.o $(OBJ)\potion.o   $(OBJ)\pray.o     $(OBJ)\priest.o
  541. VOBJ18 = $(OBJ)\quest.o    $(OBJ)\questpgr.o $(OBJ)\read.o     $(OBJ)\rect.o
  542. VOBJ19 = $(OBJ)\restore.o  $(OBJ)\rip.o      $(OBJ)\rnd.o      $(OBJ)\rumors.o
  543. VOBJ20 = $(OBJ)\save.o     $(OBJ)\shk.o      $(OBJ)\shknam.o   $(OBJ)\sit.o
  544. VOBJ21 = $(OBJ)\sounds.o   $(OBJ)\sp_lev.o   $(OBJ)\spell.o    $(OBJ)\steal.o
  545. VOBJ22 = $(OBJ)\timeout.o  $(OBJ)\topten.o   $(OBJ)\track.o    $(OBJ)\trap.o
  546. VOBJ23 = $(OBJ)\tty.o      $(OBJ)\u_init.o   $(OBJ)\uhitm.o    $(OBJ)\unix.o
  547. VOBJ24 = $(OBJ)\vault.o    $(OBJ)\vision.o   $(OBJ)\vis_tab.o  $(OBJ)\weapon.o
  548. VOBJ25 = $(OBJ)\were.o     $(OBJ)\wield.o    $(OBJ)\windows.o  $(OBJ)\wizard.o
  549. VOBJ26 = $(OBJ)\worm.o     $(OBJ)\worn.o     $(OBJ)\write.o    $(OBJ)\zap.o
  550. VOBJ27 = $(WINOBJ)
  551. VOBJ28 = $(RANDOM)
  552. HHOBJ  = $(OBJ)\version.o
  553.  
  554. VOBJ =    $(VOBJ01) $(VOBJ02) $(VOBJ03) $(VOBJ04) $(VOBJ05) $(VOBJ06) $(VOBJ07) \
  555.     $(VOBJ08) $(VOBJ09) $(VOBJ10) $(VOBJ11) $(VOBJ12) $(VOBJ13) $(VOBJ14) \
  556.     $(VOBJ15) $(VOBJ16) $(VOBJ17) $(VOBJ18) $(VOBJ19) $(VOBJ20) $(VOBJ21) \
  557.     $(VOBJ22) $(VOBJ23) $(VOBJ24) $(VOBJ25) $(VOBJ26) $(VOBJ27) $(VOBJ28)
  558. HOBJ =    $(VOBJ) $(HHOBJ)
  559.  
  560. EXTERN_H   = #$(INCL)\extern.h
  561. OS2CONF_H  = $(INCL)\os2conf.h $(INCL)\micro.h $(INCL)\system.h $(EXTERN_H)
  562. GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(OS2CONF_H)
  563. CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  564. TRAP_H       = $(INCL)\trap.h
  565. PERMONST_H = $(INCL)\permonst.h $(INCL)\monattk.h $(INCL)\monflag.h
  566. YOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  567.          $(INCL)\monst.h $(INCL)\youprop.h $(INCL)\prop.h $(INCL)\pm.h
  568. DECL_H       = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
  569.          $(INCL)\onames.h $(INCL)\color.h
  570. HACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  571.          $(INCL)\objclass.h $(TRAP_H) $(INCL)\engrave.h $(INCL)\flag.h \
  572.          $(INCL)\rm.h $(INCL)\dungeon.h $(INCL)\hack.h $(INCL)\display.h \
  573.          $(INCL)\vision.h $(INCL)\wintty.h $(INCL)\wintype.h $(INCL)\align.h \
  574.          $(INCL)\winprocs.h
  575.  
  576. #
  577. #    The default target.
  578. #
  579.  
  580. all :    makedefs dgn_comp lev_comp recover $(GAME) dat $(GUIDE)
  581.     $(ECHO) Done.
  582.  
  583. #
  584. #    Definition file creation.
  585. #
  586.  
  587. $(TEMP)\$(GAMEDEF) :
  588.     $(MAKEB) DD_NAME=$(GAME) DD_DESC=$(GAMEDES) DD_TARG=$@ do_def
  589. $(TEMP)\$(MKDFDEF) :
  590.     $(MAKEB) DD_NAME=makedefs DD_DESC="Definitions compiler" DD_TARG=$@ do_def
  591. $(TEMP)\$(DGNCDEF) :
  592.     $(MAKEB) DD_NAME=dgn_comp DD_DESC="Dungeon compiler" DD_TARG=$@ do_def
  593. $(TEMP)\$(LEVCDEF) :
  594.     $(MAKEB) DD_NAME=lev_comp DD_DESC="Level compiler" DD_TARG=$@ do_def
  595. $(TEMP)\$(RCVRDEF) :
  596.     $(MAKEB) DD_NAME=recover DD_DESC="Recovery utility" DD_TARG=$@ do_def
  597.  
  598. do_def :
  599.     $(ECHO) NAME $(DD_NAME) WINDOWCOMPAT> $(DD_TARG)
  600.     $(ECHO) DESCRIPTION '$(DD_DESC)'>> $(DD_TARG)
  601.     $(ECHO) PROTMODE>> $(DD_TARG)
  602.     $(ECHO) EXETYPE OS2>> $(DD_TARG)
  603.  
  604. #
  605. #    The main target.
  606. #
  607.  
  608. $(GAME) : $(GAMEDIR)\$(GAME).exe
  609. $(GAME).exe : $(GAMEDIR)\$(GAME).exe
  610. $(GAMEDIR)\$(GAME).exe : $(TEMP)\$(GAME).rsp
  611.     $(GAMELN)
  612.  
  613. $(TEMP)\$(GAME).rsp : $(HOBJ) $(TEMP)\$(GAMEDEF)
  614.     $(ECHO) $(SYSOBJ) $(VOBJ01) +> $@
  615.     $(ECHO) $(VOBJ02) +>> $@
  616.     $(ECHO) $(VOBJ03) +>> $@
  617.     $(ECHO) $(VOBJ04) +>> $@
  618.     $(ECHO) $(VOBJ05) +>> $@
  619.     $(ECHO) $(VOBJ06) +>> $@
  620.     $(ECHO) $(VOBJ07) +>> $@
  621.     $(ECHO) $(VOBJ08) +>> $@
  622.     $(ECHO) $(VOBJ09) +>> $@
  623.     $(ECHO) $(VOBJ10) +>> $@
  624.     $(ECHO) $(VOBJ11) +>> $@
  625.     $(ECHO) $(VOBJ12) +>> $@
  626.     $(ECHO) $(VOBJ13) +>> $@
  627.     $(ECHO) $(VOBJ14) +>> $@
  628.     $(ECHO) $(VOBJ15) +>> $@
  629.     $(ECHO) $(VOBJ16) +>> $@
  630.     $(ECHO) $(VOBJ17) +>> $@
  631.     $(ECHO) $(VOBJ18) +>> $@
  632.     $(ECHO) $(VOBJ19) +>> $@
  633.     $(ECHO) $(VOBJ20) +>> $@
  634.     $(ECHO) $(VOBJ21) +>> $@
  635.     $(ECHO) $(VOBJ22) +>> $@
  636.     $(ECHO) $(VOBJ23) +>> $@
  637.     $(ECHO) $(VOBJ24) +>> $@
  638.     $(ECHO) $(VOBJ25) +>> $@
  639.     $(ECHO) $(VOBJ26) +>> $@
  640.     $(ECHO) $(VOBJ27) +>> $@
  641.     $(ECHO) $(VOBJ28) +>> $@
  642.     $(ECHO) $(HHOBJ)>> $@
  643.     $(ECHO) $(GAMEDIR)\$(GAME).exe>> $@
  644.     $(ECHO) $(TEMP)\$(GAME)>> $@
  645.     $(ECHO) $(PLIBS) $(TERMLIB)>> $@
  646.     $(ECHO) $(TEMP)\$(GAMEDEF) $(LFLAGS);>> $@
  647.  
  648. #
  649. #    Targets for makedefs.
  650. #
  651.  
  652. makedefs : $(TEMP)\makedefs.exe
  653. $(TEMP)\makedefs.exe : $(TEMP)\makedefs.rsp
  654.     $(MKDFLN)
  655.  
  656. $(TEMP)\makedefs.rsp : $(MAKEOBJS) $(TEMP)\$(MKDFDEF)
  657.     $(ECHO) $(SYSOBJ) $(MAKEOBJS)> $@
  658.     $(ECHO) $(TEMP)\makedefs.exe>> $@
  659.     $(ECHO) nul>> $@
  660.     $(ECHO) $(RLIBS)>> $@
  661.     $(ECHO) $(MKDFMD) $(LFLAGS);>> $@
  662.  
  663. $(OBJ)\makedefs.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\permonst.h $(INCL)\objclass.h \
  664.             $(INCL)\monsym.h $(INCL)\artilist.h $(INCL)\qtext.h
  665.     $(UTILCC)
  666.  
  667. #
  668. #    Targets for the special levels compiler.
  669. #
  670.  
  671. lev_comp : $(TEMP)\lev_comp.exe
  672. $(TEMP)\lev_comp.exe : $(TEMP)\lev_comp.rsp
  673.     $(LEVCLN)
  674.  
  675. $(TEMP)\lev_comp.rsp : $(SPLEVOBJS) $(TEMP)\$(LEVCDEF)
  676.     $(ECHO) $(SYSOBJ) $(SOBJ01) +> $@
  677.     $(ECHO) $(SOBJ02) +>> $@
  678.     $(ECHO) $(SOBJ03)>> $@
  679.     $(ECHO) $(TEMP)\lev_comp.exe>> $@
  680.     $(ECHO) nul>> $@
  681.     $(ECHO) $(RLIBS)>> $@
  682.     $(ECHO) $(LEVCMD) $(LFLAGS);>> $@
  683.  
  684. $(OBJ)\lev_yacc.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
  685.     $(UTILCC)
  686. $(OBJ)\lev_lex.o  : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\lev_comp.h
  687.     $(UTILCC)
  688. $(OBJ)\lev_main.o : $(UTIL)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\termcap.h
  689.     $(UTILCC)
  690.  
  691. $(UTIL)\lev_yacc.c : $(UTIL)\lev_comp.y
  692.     $(MAKEB) YY=lev do_yacc
  693.  
  694. $(UTIL)\lev_lex.c  : $(UTIL)\lev_comp.l
  695.     $(MAKEB) YY=lev do_lex
  696.  
  697. #
  698. #    Targets for the dungeon compiler.
  699. #
  700.  
  701. dgn_comp : $(TEMP)\dgn_comp.exe
  702. $(TEMP)\dgn_comp.exe : $(TEMP)\dgn_comp.rsp
  703.     $(DGNCLN)
  704.  
  705. $(TEMP)\dgn_comp.rsp : $(DGNCOMPOBJS) $(TEMP)\$(DGNCDEF)
  706.     $(ECHO) $(SYSOBJ) $(DOBJ01) +> $@
  707.     $(ECHO) $(DOBJ02)>> $@
  708.     $(ECHO) $(TEMP)\dgn_comp.exe>> $@
  709.     $(ECHO) nul>> $@
  710.     $(ECHO) $(RLIBS)>> $@
  711.     $(ECHO) $(DGNCMD) $(LFLAGS);>> $@
  712.  
  713. $(OBJ)\dgn_yacc.o : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dgn_file.h
  714.     $(UTILCC)
  715. $(OBJ)\dgn_lex.o  : $(UTIL)\$(CB) $(CONFIG_H) $(INCL)\dgn_comp.h $(INCL)\dgn_file.h
  716.     $(UTILCC)
  717. $(OBJ)\dgn_main.o : $(UTIL)\$(CB) $(CONFIG_H)
  718.     $(UTILCC)
  719.  
  720. $(UTIL)\dgn_yacc.c : $(UTIL)\dgn_comp.y
  721.     $(MAKEB) YY=dgn do_yacc
  722.  
  723. $(UTIL)\dgn_lex.c  : $(UTIL)\dgn_comp.l
  724.     $(MAKEB) YY=dgn do_lex
  725.  
  726. #
  727. #    For both lev_comp and dgn_comp.
  728. #
  729.  
  730. $(OBJ)\panic.o : $(UTIL)\$(CB) $(CONFIG_H)
  731.     $(UTILCC)
  732.  
  733. #
  734. #    Yacc and Lex targets.
  735. #
  736.  
  737. yacc_cpy :
  738.     $(CP) $(SSYS)\$(YY)_yacc.c $(UTIL)
  739.     $(CP) $(SSYS)\$(YY)_comp.h $(INCL)
  740.     $(MAKEB) TT=$(UTIL)\$(YY)_yacc.c do_touch
  741.     $(MAKEB) TT=$(INCL)\$(YY)_comp.h do_touch
  742.  
  743. yacc_msg :
  744.     $(ECHO) $(YY)_comp.y has changed. To update $(YY)_yacc.c and $(YY)_comp.h run $(YACC).
  745.  
  746. yacc_act :
  747.     $(YACC) -d $(UTIL)\$(YY)_comp.y
  748.     $(CP) $(YTABC) $(UTIL)\$(YY)_yacc.c
  749.     $(CP) $(YTABH) $(INCL)\$(YY)_comp.h
  750.     $(RM) $(YTABC)
  751.     $(RM) $(YTABH)
  752.  
  753. lex_cpy :
  754.     $(CP) $(SSYS)\$(YY)_lex.c $(UTIL)
  755.     $(MAKEB) TT=$(UTIL)\$(YY)_lex.c do_touch
  756.  
  757. lex_msg :
  758.     $(ECHO) $(YY)_comp.l has changed. To update $(YY)_lex.c run $(LEX).
  759.  
  760. lex_act :
  761.     $(LEX) $(UTIL)\$(YY)_comp.l
  762.     $(CP) $(LEXYYC) $(UTIL)\$(YY)_lex.c
  763.     $(RM) $(LEXYYC)
  764.  
  765. #
  766. #    Why must this be so kludgy?
  767. #
  768.  
  769. realtouch :
  770.     $(TOUCH) $(TT)
  771.  
  772. faketouch :
  773.     $(B) $(CAT) $(TT) > $(TEMP)\foo.bar $(S) $(CP) $(TEMP)\foo.bar $(TT) $(S) $(RM) $(TEMP)\foo.bar $(E)
  774.  
  775. #
  776. #    Targets for the recovery utility.
  777. #
  778.  
  779. recover : $(GAMEDIR)\recover.exe
  780. $(GAMEDIR)\recover.exe : $(TEMP)\recover.rsp
  781.     $(RCVRLN)
  782.  
  783. $(TEMP)\recover.rsp : $(RECOVOBJS) $(TEMP)\$(RCVRDEF)
  784.     $(ECHO) $(SYSOBJ) $(RECOVOBJS)> $@
  785.     $(ECHO) $(GAMEDIR)\recover.exe>> $@
  786.     $(ECHO) nul>> $@
  787.     $(ECHO) $(PLIBS)>> $@
  788.     $(ECHO) $(TEMP)\$(RCVRDEF) $(LFLAGS);>> $@
  789.  
  790. $(OBJ)\recover.o : $(UTIL)\$(CB) $(CONFIG_H)
  791.     $(UTILCC)
  792.  
  793. #
  794. #    The following files depend on makedefs to be created.
  795. #
  796. #    date.h should be remade every time any of the source or include
  797. #    files is modified.
  798. #
  799.  
  800. $(INCL)\date.h : $(VOBJ) $(TEMP)\makedefs.exe
  801.     $(TEMP)\makedefs -v
  802.     $(CP) $(DAT)\options $(GAMEDIR)
  803.     $(RM) $(DAT)\options
  804.  
  805. $(INCL)\onames.h : $(TEMP)\makedefs.exe
  806.     $(TEMP)\makedefs -o
  807.  
  808. $(INCL)\pm.h : $(TEMP)\makedefs.exe
  809.     $(TEMP)\makedefs -p
  810.  
  811. monstr.c : $(TEMP)\makedefs.exe
  812.     $(TEMP)\makedefs -m
  813.  
  814. $(OBJ)\monstr.o : $(CB)
  815.     $(SRCCC)
  816.  
  817. $(GAMEDIR)\data : $(DAT)\$(DATABASE) $(TEMP)\makedefs.exe
  818.     $(TEMP)\makedefs -d
  819.     $(CP) $(DAT)\data $(GAMEDIR)
  820.     $(RM) $(DAT)\data
  821.  
  822. $(GAMEDIR)\rumors : $(DAT)\rumors.tru $(DAT)\rumors.fal $(TEMP)\makedefs.exe
  823.     $(TEMP)\makedefs -r
  824.     $(CP) $(DAT)\rumors $(GAMEDIR)
  825.     $(RM) $(DAT)\rumors
  826.  
  827. $(GAMEDIR)\oracles : $(DAT)\oracles.txt $(TEMP)\makedefs.exe
  828.     $(TEMP)\makedefs -h
  829.     $(CP) $(DAT)\oracles $(GAMEDIR)
  830.     $(RM) $(DAT)\oracles
  831.  
  832. $(GAMEDIR)\quest.dat : $(DAT)\quest.txt $(TEMP)\makedefs.exe
  833.     $(TEMP)\makedefs -q
  834.     $(CP) $(DAT)\quest.dat $(GAMEDIR)
  835.     $(RM) $(DAT)\quest.dat
  836.  
  837. #
  838. #    Vision tables for algorithm D.
  839. #
  840.  
  841. vis_tab.c : $(INCL)\vis_tab.h
  842. $(INCL)\vis_tab.h : $(TEMP)\makedefs.exe
  843.     $(TEMP)\makedefs -z
  844.  
  845. $(OBJ)\vis_tab.o : $(CB)
  846.     $(SRCCC)
  847.  
  848. #
  849. #    The following programs vary depending on what OS you are using.
  850. #
  851.  
  852. $(OBJ)\main.o : $(SSYS)\pc$(CB) $(HACK_H)
  853.     $(PSYSCC)
  854. $(OBJ)\tty.o  : $(SSYS)\pc$(CB) $(HACK_H) $(INCL)\func_tab.h
  855.     $(PSYSCC)
  856. $(OBJ)\unix.o : $(SSYS)\pc$(CB) $(HACK_H)
  857.     $(PSYSCC)
  858.  
  859. #
  860. #    Other system specific modules.
  861. #
  862.  
  863. $(OBJ)\os2.o   : $(SYS)\$(CB) $(HACK_H) $(INCL)\termcap.h $(INCL)\def_os2.h
  864.     $(SYSCC)
  865. $(OBJ)\pcsys.o : $(SSYS)\$(CB) $(HACK_H)
  866.     $(SSYSCC)
  867.  
  868. #
  869. #    Berkeley random(3) routines.
  870. #
  871.  
  872. $(OBJ)\random.o : $(SSYS)\$(CB)
  873.     $(SSYSCC)
  874.  
  875. #
  876. #    Window source.
  877. #
  878.  
  879. $(OBJ)\getline.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\func_tab.h
  880.     $(WINCC)
  881. $(OBJ)\termcap.o : $(WIN)\$(CB) $(HACK_H) $(INCL)\termcap.h
  882.     $(WINCC)
  883. $(OBJ)\topl.o    : $(WIN)\$(CB) $(HACK_H) $(INCL)\termcap.h
  884.     $(WINCC)
  885. $(OBJ)\wintty.o  : $(WIN)\$(CB) $(HACK_H) $(INCL)\termcap.h
  886.     $(WINCC)
  887.  
  888. #
  889. #    Secondary targets.
  890. #
  891.  
  892. dat :    spec_lev help_fil $(GAMEDIR)\dungeon $(GAMEDIR)\data $(GAMEDIR)\rumors \
  893.     $(GAMEDIR)\oracles $(GAMEDIR)\quest.dat    $(GAMEDIR)\$(GAME).ico \
  894.     $(GAMEDIR)\$(GAME).cmd $(GAMEDIR)\nethack.cnf
  895.  
  896. help_fil : $(GAMEDIR)\cmdhelp $(GAMEDIR)\help $(GAMEDIR)\hh $(GAMEDIR)\history \
  897.     $(GAMEDIR)\license $(GAMEDIR)\opthelp $(GAMEDIR)\wizhelp
  898.  
  899. $(GAMEDIR)\cmdhelp : $(DAT)\cmdhelp
  900.     $(CP) $(DAT)\cmdhelp $(GAMEDIR)
  901. $(GAMEDIR)\help : $(DAT)\help
  902.     $(CP) $(DAT)\help $(GAMEDIR)
  903. $(GAMEDIR)\hh : $(DAT)\hh
  904.     $(CP) $(DAT)\hh $(GAMEDIR)
  905. $(GAMEDIR)\history : $(DAT)\history
  906.     $(CP) $(DAT)\history $(GAMEDIR)
  907. $(GAMEDIR)\license : $(DAT)\license
  908.     $(CP) $(DAT)\license $(GAMEDIR)
  909. $(GAMEDIR)\opthelp : $(DAT)\opthelp
  910.     $(CP) $(DAT)\opthelp $(GAMEDIR)
  911. $(GAMEDIR)\wizhelp : $(DAT)\wizhelp
  912.     $(CP) $(DAT)\wizhelp $(GAMEDIR)
  913.  
  914. $(GAMEDIR)\dungeon : $(DAT)\dungeon.def $(TEMP)\makedefs.exe $(TEMP)\dgn_comp.exe
  915.     $(TEMP)\makedefs -e
  916.     $(TEMP)\dgn_comp $(DAT)\dungeon.pdf
  917.     $(CP) $(DAT)\dungeon $(GAMEDIR)
  918.     $(RM) $(DAT)\dungeon.pdf
  919.     $(RM) $(DAT)\dungeon
  920.  
  921. AFILES = $(GAMEDIR)\A-goal.lev
  922. BFILES = $(GAMEDIR)\B-goal.lev
  923. CFILES = $(GAMEDIR)\C-goal.lev
  924. EFILES = $(GAMEDIR)\E-goal.lev
  925. HFILES = $(GAMEDIR)\H-goal.lev
  926. KFILES = $(GAMEDIR)\K-goal.lev
  927. PFILES = $(GAMEDIR)\P-goal.lev
  928. RFILES = $(GAMEDIR)\R-goal.lev
  929. SFILES = $(GAMEDIR)\S-goal.lev
  930. TFILES = $(GAMEDIR)\T-goal.lev
  931. VFILES = $(GAMEDIR)\V-goal.lev
  932. WFILES = $(GAMEDIR)\W-goal.lev
  933.  
  934. XFILES = $(AFILES) $(BFILES) $(CFILES) $(EFILES) $(HFILES) $(KFILES) \
  935.      $(PFILES) $(RFILES) $(SFILES) $(TFILES) $(VFILES) $(WFILES)
  936.  
  937. spec_lev : $(GAMEDIR)\astral.lev $(GAMEDIR)\bigroom.lev $(GAMEDIR)\castle.lev \
  938.        $(GAMEDIR)\knox.lev $(GAMEDIR)\medusa-1.lev $(GAMEDIR)\mine_end.lev \
  939.        $(GAMEDIR)\oracle.lev $(GAMEDIR)\tower1.lev $(GAMEDIR)\valley.lev \
  940.        $(GAMEDIR)\wizard1.lev $(XFILES)
  941.  
  942. #    Single special level files
  943.  
  944. $(GAMEDIR)\bigroom.lev : $(DAT)\bigroom.des $(TEMP)\lev_comp.exe
  945.     $(MAKEB) LF=bigroom do_slev
  946. $(GAMEDIR)\castle.lev : $(DAT)\castle.des $(TEMP)\lev_comp.exe
  947.     $(MAKEB) LF=castle do_slev
  948. $(GAMEDIR)\knox.lev : $(DAT)\knox.des $(TEMP)\lev_comp.exe
  949.     $(MAKEB) LF=knox do_slev
  950. $(GAMEDIR)\oracle.lev : $(DAT)\oracle.des $(TEMP)\lev_comp.exe
  951.     $(MAKEB) LF=oracle do_slev
  952.  
  953. do_slev :
  954.     $(TEMP)\lev_comp $(DAT)\$(LF).des
  955.     $(CP) $(LF).lev $(GAMEDIR)
  956.     $(RM) $(LF).lev
  957.  
  958. #    Multiple special level files
  959.  
  960. $(GAMEDIR)\astral.lev : $(DAT)\endgame.des $(TEMP)\lev_comp.exe
  961.     $(TEMP)\lev_comp $(DAT)\endgame.des
  962.     $(CP) air.lev $(GAMEDIR)
  963.     $(CP) astral.lev $(GAMEDIR)
  964.     $(CP) earth.lev $(GAMEDIR)
  965.     $(CP) fire.lev $(GAMEDIR)
  966.     $(CP) water.lev $(GAMEDIR)
  967.     $(RM) air.lev
  968.     $(RM) astral.lev
  969.     $(RM) earth.lev
  970.     $(RM) fire.lev
  971.     $(RM) water.lev
  972.  
  973. $(GAMEDIR)\medusa-1.lev : $(DAT)\medusa.des $(TEMP)\lev_comp.exe
  974.     $(TEMP)\lev_comp $(DAT)\medusa.des
  975.     $(CP) medusa-?.lev $(GAMEDIR)
  976.     $(RM) medusa-?.lev
  977.  
  978. $(GAMEDIR)\mine_end.lev : $(DAT)\mines.des $(TEMP)\lev_comp.exe
  979.     $(TEMP)\lev_comp $(DAT)\mines.des
  980.     $(CP) mine_end.lev $(GAMEDIR)
  981.     $(CP) minefill.lev $(GAMEDIR)
  982.     $(CP) minetown.lev $(GAMEDIR)
  983.     $(RM) mine_end.lev
  984.     $(RM) minefill.lev
  985.     $(RM) minetown.lev
  986.  
  987. $(GAMEDIR)\tower1.lev : $(DAT)\tower.des $(TEMP)\lev_comp.exe
  988.     $(TEMP)\lev_comp $(DAT)\tower.des
  989.     $(CP) tower?.lev $(GAMEDIR)
  990.     $(RM) tower?.lev
  991.  
  992. $(GAMEDIR)\valley.lev : $(DAT)\gehennom.des $(TEMP)\lev_comp.exe
  993.     $(TEMP)\lev_comp $(DAT)\gehennom.des
  994.     $(CP) asmodeus.lev $(GAMEDIR)
  995.     $(CP) baalz.lev $(GAMEDIR)
  996.     $(CP) juiblex.lev $(GAMEDIR)
  997.     $(CP) orcus.lev $(GAMEDIR)
  998.     $(CP) sanctum.lev $(GAMEDIR)
  999.     $(CP) valley.lev $(GAMEDIR)
  1000.     $(RM) asmodeus.lev
  1001.     $(RM) baalz.lev
  1002.     $(RM) juiblex.lev
  1003.     $(RM) orcus.lev
  1004.     $(RM) sanctum.lev
  1005.     $(RM) valley.lev
  1006.  
  1007. $(GAMEDIR)\wizard1.lev : $(DAT)\yendor.des $(TEMP)\lev_comp.exe
  1008.     $(TEMP)\lev_comp $(DAT)\yendor.des
  1009.     $(CP) wizard?.lev $(GAMEDIR)
  1010.     $(CP) fakewiz?.lev $(GAMEDIR)
  1011.     $(RM) wizard?.lev
  1012.     $(RM) fakewiz?.lev
  1013.  
  1014. #    Quest dungeons
  1015.  
  1016. $(AFILES) : $(DAT)\Arch.des $(TEMP)\lev_comp.exe
  1017.     $(MAKEB) QQ=A QF=Arch do_quest
  1018. $(BFILES) : $(DAT)\Barb.des $(TEMP)\lev_comp.exe
  1019.     $(MAKEB) QQ=B QF=Barb do_quest
  1020. $(CFILES) : $(DAT)\Caveman.des $(TEMP)\lev_comp.exe
  1021.     $(MAKEB) QQ=C QF=Caveman do_quest
  1022. $(EFILES) : $(DAT)\Elf.des $(TEMP)\lev_comp.exe
  1023.     $(MAKEB) QQ=E QF=Elf do_quest
  1024. $(HFILES) : $(DAT)\Healer.des $(TEMP)\lev_comp.exe
  1025.     $(MAKEB) QQ=H QF=Healer do_quest
  1026. $(KFILES) : $(DAT)\Knight.des $(TEMP)\lev_comp.exe
  1027.     $(MAKEB) QQ=K QF=Knight do_quest
  1028. $(PFILES) : $(DAT)\Priest.des $(TEMP)\lev_comp.exe
  1029.     $(MAKEB) QQ=P QF=Priest do_quest
  1030. $(RFILES) : $(DAT)\Rogue.des $(TEMP)\lev_comp.exe
  1031.     $(MAKEB) QQ=R QF=Rogue do_quest
  1032. $(SFILES) : $(DAT)\Samurai.des $(TEMP)\lev_comp.exe
  1033.     $(MAKEB) QQ=S QF=Samurai do_quest
  1034. $(TFILES) : $(DAT)\Tourist.des $(TEMP)\lev_comp.exe
  1035.     $(MAKEB) QQ=T QF=Tourist do_quest
  1036. $(VFILES) : $(DAT)\Valkyrie.des $(TEMP)\lev_comp.exe
  1037.     $(MAKEB) QQ=V QF=Valkyrie do_quest
  1038. $(WFILES) : $(DAT)\Wizard.des $(TEMP)\lev_comp.exe
  1039.     $(MAKEB) QQ=W QF=Wizard do_quest
  1040.  
  1041. do_quest :
  1042.     $(TEMP)\lev_comp $(DAT)\$(QF).des
  1043.     $(CP) $(QQ)-goal.lev $(GAMEDIR)
  1044.     $(CP) $(QQ)-fill?.lev $(GAMEDIR)
  1045.     $(CP) $(QQ)-locate.lev $(GAMEDIR)
  1046.     $(CP) $(QQ)-start.lev $(GAMEDIR)
  1047.     $(RM) $(QQ)-goal.lev
  1048.     $(RM) $(QQ)-fill?.lev
  1049.     $(RM) $(QQ)-locate.lev
  1050.     $(RM) $(QQ)-start.lev
  1051.  
  1052. #
  1053. #    NetHack icon for Presentation Manager.
  1054. #
  1055.  
  1056. $(GAMEDIR)\$(GAME).ico : $(SYS)\nhpmico.uu
  1057.     $(MAKEB) do_icon
  1058.  
  1059. icon_msg :
  1060.     $(ECHO) Icon file not extracted.  Extract manually if required.
  1061.  
  1062. icon_act :
  1063.     $(UUDECODE) $(SYS)\nhpmico.uu
  1064.     $(CP) nethack.ico $(GAMEDIR)\$(GAME).ico
  1065.     $(RM) nethack.ico
  1066.  
  1067. #
  1068. #    NetHack command file to use with Presentation Manager.
  1069. #
  1070.  
  1071. $(GAMEDIR)\$(GAME).cmd :
  1072.     $(MAKEB) CMDF=$@ do_cmd
  1073.  
  1074. cmd_msg :
  1075.     $(ECHO) Command file not created.  Create manually if required.
  1076.  
  1077. cmd_act :
  1078.     $(ECHO) @echo off> $(CMDF)
  1079.     $(ECHO) REM Command file for starting nethack.exe from PM/WPS Desktop>> $(CMDF)
  1080.     $(ECHO) $(GAME).exe $(P)1 $(P)2 $(P)3 $(P)4 $(P)5 $(P)6 $(P)7>> $(CMDF)
  1081.     $(ECHO) pause>> $(CMDF)
  1082.  
  1083. #
  1084. #    NetHack configuration file.  Will not overwrite an existing file.
  1085. #
  1086.  
  1087. $(GAMEDIR)\nethack.cnf :
  1088.     $(CP) $(SSYS)\nethack.cnf $(GAMEDIR)
  1089.  
  1090. #
  1091. #    Documentation.
  1092. #
  1093.  
  1094. $(TEMP)\$(GUIDEBOO).dvi : $(DOC)\$(GUIDEBOO).tex
  1095.     $(LATEX) $(DOC)\$(GUIDEBOO).tex
  1096.     $(CP) $(GUIDEBOO).dvi $(TEMP)
  1097.     $(CP) $(GUIDEBOO).aux $(TEMP)
  1098.     $(CP) $(GUIDEBOO).log $(TEMP)
  1099.     $(RM) $(GUIDEBOO).dvi
  1100.     $(RM) $(GUIDEBOO).aux
  1101.     $(RM) $(GUIDEBOO).log
  1102.  
  1103. #
  1104. #    Housekeeping.
  1105. #
  1106.  
  1107. clean :
  1108.     -$(RM) $(OBJ)\*.o
  1109.  
  1110. spotless : clean
  1111.     -$(RM) $(INCL)\date.h
  1112.     -$(RM) $(INCL)\onames.h
  1113.     -$(RM) $(INCL)\pm.h
  1114.     -$(RM) $(INCL)\vis_tab.h
  1115.     -$(RM) vis_tab.c
  1116.     -$(RM) monstr.c
  1117.     -$(RM) *.lev
  1118.     -$(RM) nethack.ico
  1119.     -$(RM) $(TEMP)\makedefs.exe
  1120.     -$(RM) $(TEMP)\lev_comp.exe
  1121.     -$(RM) $(TEMP)\dgn_comp.exe
  1122.     -$(RM) $(TEMP)\*.rsp
  1123.     -$(RM) $(TEMP)\*.def
  1124.     -$(RM) $(TEMP)\*.map
  1125.     -$(RM) $(TEMP)\$(GUIDEBOO).dvi
  1126.     -$(RM) $(TEMP)\$(GUIDEBOO).aux
  1127.     -$(RM) $(TEMP)\$(GUIDEBOO).log
  1128.  
  1129. #
  1130. #    Main source.
  1131. #
  1132. #    Default rules are sooo difficult for so many make
  1133. #    programs that we do this the most straightforward way.
  1134. #
  1135.  
  1136. $(OBJ)\allmain.o  : $(SRC)\$(CB) $(HACK_H)
  1137.     $(SRCCC)
  1138. $(OBJ)\alloc.o    : $(SRC)\$(CB) $(CONFIG_H)
  1139.     $(SRCCC)
  1140. $(OBJ)\apply.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
  1141.     $(SRCCC)
  1142. $(OBJ)\artifact.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\artilist.h
  1143.     $(SRCCC)
  1144. $(OBJ)\attrib.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1145.     $(SRCCC)
  1146. $(OBJ)\ball.o     : $(SRC)\$(CB) $(HACK_H)
  1147.     $(SRCCC)
  1148. $(OBJ)\bones.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1149.     $(SRCCC)
  1150. $(OBJ)\botl.o     : $(SRC)\$(CB) $(HACK_H)
  1151.     $(SRCCC)
  1152. $(OBJ)\cmd.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\func_tab.h
  1153.     $(SRCCC)
  1154. $(OBJ)\dbridge.o  : $(SRC)\$(CB) $(HACK_H)
  1155.     $(SRCCC)
  1156. $(OBJ)\decl.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h
  1157.     $(SRCCC)
  1158. $(OBJ)\detect.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1159.     $(SRCCC)
  1160. $(OBJ)\display.o  : $(SRC)\$(CB) $(HACK_H)
  1161.     $(SRCCC)
  1162. $(OBJ)\do.o       : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1163.     $(SRCCC)
  1164. $(OBJ)\do_name.o  : $(SRC)\$(CB) $(HACK_H)
  1165.     $(SRCCC)
  1166. $(OBJ)\do_wear.o  : $(SRC)\$(CB) $(HACK_H)
  1167.     $(SRCCC)
  1168. $(OBJ)\dog.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h
  1169.     $(SRCCC)
  1170. $(OBJ)\dogmove.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  1171.     $(SRCCC)
  1172. $(OBJ)\dokick.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1173.     $(SRCCC)
  1174. $(OBJ)\dothrow.o  : $(SRC)\$(CB) $(HACK_H)
  1175.     $(SRCCC)
  1176. $(OBJ)\drawing.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\termcap.h
  1177.     $(SRCCC)
  1178. $(OBJ)\dungeon.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\dgn_file.h
  1179.     $(SRCCC)
  1180. $(OBJ)\eat.o      : $(SRC)\$(CB) $(HACK_H)
  1181.     $(SRCCC)
  1182. $(OBJ)\end.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1183.     $(SRCCC)
  1184. $(OBJ)\engrave.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1185.     $(SRCCC)
  1186. $(OBJ)\exper.o    : $(SRC)\$(CB) $(HACK_H)
  1187.     $(SRCCC)
  1188. $(OBJ)\explode.o  : $(SRC)\$(CB) $(HACK_H)
  1189.     $(SRCCC)
  1190. $(OBJ)\extralev.o : $(SRC)\$(CB) $(HACK_H)
  1191.     $(SRCCC)
  1192. $(OBJ)\files.o    : $(SRC)\$(CB) $(HACK_H)
  1193.     $(SRCCC)
  1194. $(OBJ)\fountain.o : $(SRC)\$(CB) $(HACK_H)
  1195.     $(SRCCC)
  1196. $(OBJ)\hack.o     : $(SRC)\$(CB) $(HACK_H)
  1197.     $(SRCCC)
  1198. $(OBJ)\hacklib.o  : $(SRC)\$(CB) $(HACK_H)
  1199.     $(SRCCC)
  1200. $(OBJ)\invent.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1201.     $(SRCCC)
  1202. $(OBJ)\lock.o     : $(SRC)\$(CB) $(HACK_H)
  1203.     $(SRCCC)
  1204. $(OBJ)\makemon.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h $(INCL)\emin.h
  1205.     $(SRCCC)
  1206. $(OBJ)\mail.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\mail.h
  1207.     $(SRCCC)
  1208. $(OBJ)\mcastu.o   : $(SRC)\$(CB) $(HACK_H)
  1209.     $(SRCCC)
  1210. $(OBJ)\mhitm.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  1211.     $(SRCCC)
  1212. $(OBJ)\mhitu.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  1213.     $(SRCCC)
  1214. $(OBJ)\minion.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\emin.h $(INCL)\epri.h
  1215.     $(SRCCC)
  1216. $(OBJ)\mklev.o    : $(SRC)\$(CB) $(HACK_H)
  1217.     $(SRCCC)
  1218. $(OBJ)\mkmap.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
  1219.     $(SRCCC)
  1220. $(OBJ)\mkmaze.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h
  1221.     $(SRCCC)
  1222. $(OBJ)\mkobj.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1223.     $(SRCCC)
  1224. $(OBJ)\mkroom.o   : $(SRC)\$(CB) $(HACK_H)
  1225.     $(SRCCC)
  1226. $(OBJ)\mon.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  1227.     $(SRCCC)
  1228. $(OBJ)\mondata.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
  1229.     $(SRCCC)
  1230. $(OBJ)\monmove.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  1231.     $(SRCCC)
  1232. $(OBJ)\monst.o    : $(SRC)\$(CB) $(CONFIG_H) $(PERMONST_H) $(INCL)\monsym.h $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h $(INCL)\color.h
  1233.     $(SRCCC)
  1234. $(OBJ)\mplayer.o  : $(SRC)\$(CB) $(HACK_H)
  1235.     $(SRCCC)
  1236. $(OBJ)\mthrowu.o  : $(SRC)\$(CB) $(HACK_H)
  1237.     $(SRCCC)
  1238. $(OBJ)\muse.o     : $(SRC)\$(CB) $(HACK_H)
  1239.     $(SRCCC)
  1240. $(OBJ)\music.o    : $(SRC)\$(CB) $(HACK_H)
  1241.     $(SRCCC)
  1242. $(OBJ)\o_init.o   : $(SRC)\$(CB) $(HACK_H)
  1243.     $(SRCCC)
  1244. $(OBJ)\objects.o  : $(SRC)\$(CB) $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h $(INCL)\color.h
  1245.     $(SRCCC)
  1246. $(OBJ)\objnam.o   : $(SRC)\$(CB) $(HACK_H)
  1247.     $(SRCCC)
  1248. $(OBJ)\options.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\termcap.h
  1249.     $(SRCCC)
  1250. $(OBJ)\pager.o    : $(SRC)\$(CB) $(HACK_H)
  1251.     $(SRCCC)
  1252. $(OBJ)\pickup.o   : $(SRC)\$(CB) $(HACK_H)
  1253.     $(SRCCC)
  1254. $(OBJ)\pline.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h
  1255.     $(SRCCC)
  1256. $(OBJ)\polyself.o : $(SRC)\$(CB) $(HACK_H)
  1257.     $(SRCCC)
  1258. $(OBJ)\potion.o   : $(SRC)\$(CB) $(HACK_H)
  1259.     $(SRCCC)
  1260. $(OBJ)\pray.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\epri.h
  1261.     $(SRCCC)
  1262. $(OBJ)\priest.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h $(INCL)\emin.h
  1263.     $(SRCCC)
  1264. $(OBJ)\quest.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\quest.h $(INCL)\qtext.h
  1265.     $(SRCCC)
  1266. $(OBJ)\questpgr.o : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h
  1267.     $(SRCCC)
  1268. $(OBJ)\read.o     : $(SRC)\$(CB) $(HACK_H)
  1269.     $(SRCCC)
  1270. $(OBJ)\rect.o     : $(SRC)\$(CB) $(HACK_H)
  1271.     $(SRCCC)
  1272. $(OBJ)\restore.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\termcap.h $(INCL)\quest.h
  1273.     $(SRCCC)
  1274. $(OBJ)\rip.o      : $(SRC)\$(CB) $(HACK_H)
  1275.     $(SRCCC)
  1276. $(OBJ)\rnd.o      : $(SRC)\$(CB) $(HACK_H)
  1277.     $(SRCCC)
  1278. $(OBJ)\rumors.o   : $(SRC)\$(CB) $(HACK_H)
  1279.     $(SRCCC)
  1280. $(OBJ)\save.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h $(INCL)\quest.h
  1281.     $(SRCCC)
  1282. $(OBJ)\shk.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1283.     $(SRCCC)
  1284. $(OBJ)\shknam.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\eshk.h
  1285.     $(SRCCC)
  1286. $(OBJ)\sit.o      : $(SRC)\$(CB) $(HACK_H) $(INCL)\artifact.h
  1287.     $(SRCCC)
  1288. $(OBJ)\sounds.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
  1289.     $(SRCCC)
  1290. $(OBJ)\sp_lev.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\sp_lev.h $(INCL)\rect.h
  1291.     $(SRCCC)
  1292. $(OBJ)\spell.o    : $(SRC)\$(CB) $(HACK_H)
  1293.     $(SRCCC)
  1294. $(OBJ)\steal.o    : $(SRC)\$(CB) $(HACK_H)
  1295.     $(SRCCC)
  1296. $(OBJ)\timeout.o  : $(SRC)\$(CB) $(HACK_H)
  1297.     $(SRCCC)
  1298. $(OBJ)\topten.o   : $(SRC)\$(CB) $(HACK_H)
  1299.     $(SRCCC)
  1300. $(OBJ)\track.o    : $(SRC)\$(CB) $(HACK_H)
  1301.     $(SRCCC)
  1302. $(OBJ)\trap.o     : $(SRC)\$(CB) $(HACK_H)
  1303.     $(SRCCC)
  1304. $(OBJ)\u_init.o   : $(SRC)\$(CB) $(HACK_H)
  1305.     $(SRCCC)
  1306. $(OBJ)\uhitm.o    : $(SRC)\$(CB) $(HACK_H)
  1307.     $(SRCCC)
  1308. $(OBJ)\vault.o    : $(SRC)\$(CB) $(HACK_H) $(INCL)\vault.h
  1309.     $(SRCCC)
  1310. $(OBJ)\version.o  : $(SRC)\$(CB) $(HACK_H) $(INCL)\date.h $(INCL)\$(PATCHLEV).h
  1311.     $(SRCCC)
  1312. $(OBJ)\vision.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\vis_tab.h
  1313.     $(SRCCC)
  1314. $(OBJ)\weapon.o   : $(SRC)\$(CB) $(HACK_H)
  1315.     $(SRCCC)
  1316. $(OBJ)\were.o     : $(SRC)\$(CB) $(HACK_H)
  1317.     $(SRCCC)
  1318. $(OBJ)\wield.o    : $(SRC)\$(CB) $(HACK_H)
  1319.     $(SRCCC)
  1320. $(OBJ)\windows.o  : $(SRC)\$(CB) $(HACK_H)
  1321.     $(SRCCC)
  1322. $(OBJ)\wizard.o   : $(SRC)\$(CB) $(HACK_H) $(INCL)\qtext.h
  1323.     $(SRCCC)
  1324. $(OBJ)\worm.o     : $(SRC)\$(CB) $(HACK_H) $(INCL)\lev.h
  1325.     $(SRCCC)
  1326. $(OBJ)\worn.o     : $(SRC)\$(CB) $(HACK_H)
  1327.     $(SRCCC)
  1328. $(OBJ)\write.o    : $(SRC)\$(CB) $(HACK_H)
  1329.     $(SRCCC)
  1330. $(OBJ)\zap.o      : $(SRC)\$(CB) $(HACK_H)
  1331.     $(SRCCC)
  1332.